package com.nd.android.musicboxlibrary.interf;

import com.nd.android.musicboxlibrary.business.bean.Album;
import com.nd.android.musicboxlibrary.business.bean.MusicInfo;
import com.nd.android.musicboxlibrary.business.comm.NdException;

import java.util.List;

/**
 * 
 * <br>
 * Created 2014年7月11日 上午2:02:30
 * 
 * @version
 * @author wat.ztag
 * 
 * @see
 */
public interface IPlaylistManager {

	
    /**
     * 根据歌曲id，获取音乐相关信息 <br>
     * Created 2014年9月15日 下午11:16:55
     * 
     * @param id
     *            音乐ID
     * @return MusicInfo
     * @author wat.ztag
     */
    MusicInfo findMusic(long id);

    // 我的音乐相关接口 ------------------------------------------------
    //
    /**
     * 获取我喜欢的歌曲列表 <br>
     * Created 2014年9月15日 下午11:16:08
     * 
     * @return List<MusicInfo>
     * @author wat.ztag
     */
    List<MusicInfo> getMusicListOfFav();

    /**
     * 获取歌曲下载列表 <br>
     * Created 2014年9月15日 下午11:16:12
     * 
     * @return List<MusicInfo>
     * @author wat.ztag
     */
    List<MusicInfo> getMusicListOfDownLoad();

    /**
     * 获取最近播放歌曲列表 <br>
     * Created 2014年9月15日 下午11:16:14
     * 
     * @return List<MusicInfo>
     * @author wat.ztag
     */
    List<MusicInfo> getMusicListOfLastPlayed();

    // Jay的乐盒相关接口 ------------------------------------------------
    /**
     * 获取单曲列表 <br>
     * Created 2014年9月15日 下午11:16:17
     * 
     * @return List<MusicInfo>
     * @throws NdException Exception
     * @author wat.ztag
     */
    List<MusicInfo> getMusicList() throws NdException;

    /**
     * 搜索歌曲 <br>
     * Created 2014年9月15日 下午11:16:21
     * 
     * @param kewWord
     *            搜索关键字
     * @return List<MusicInfo>
     * @author wat.ztag
     */
    List<MusicInfo> searchMusicList(String kewWord);

    /**
     * 获取专辑列表 <br>
     * Created 2014年9月15日 下午11:16:25
     * 
     * @return List<Album>
     * @throws NdException Exception
     * @author wat.ztag
     */
    List<Album> getAlbumList() throws NdException;

    /**
     * 获取专辑歌曲列表 <br>
     * Created 2014年9月15日 下午11:16:34
     * 
     * @param ablumId
     *            专辑ID
     * @return List<MusicInfo>
     * @author wat.ztag
     */
    List<MusicInfo> getMusicListOfAlbum(long ablumId);

    // 其他 --------------------------------------------------------------
    /**
     * 获取播放列表 <br>
     * Created 2014年9月15日 下午11:16:37
     * 
     * @return List<MusicInfo>
     * @author wat.ztag
     */
    List<MusicInfo> getMusicListOfPlaying();

    /**
     * 喜欢音乐 <br>
     * Created 2014年9月15日 下午11:16:41
     * 
     * @param musicInfo
     *            音乐信息
     * @author wat.ztag
     */
    void likeMusic(MusicInfo musicInfo);

    /**
     * 不喜欢音乐 <br>
     * Created 2014年9月15日 下午11:16:43
     * 
     * @param musicInfo
     *            音乐信息
     * @author wat.ztag
     */
    void unLikeMusic(MusicInfo musicInfo);

    /**
     * 记录播放列表 <br>
     * Created 2014年9月15日 下午11:16:46
     * 
     * @param musicInfoList
     *            音乐列表
     * @author wat.ztag
     */
    void replaceMusicListOfPlaying(List<? extends MusicInfo> musicInfoList);

    /**
     * 记录最近播放歌曲 <br>
     * Created 2014年9月15日 下午11:16:49
     * 
     * @param musicInfo
     *            音乐信息
     * @author wat.ztag
     */
    void addMusic2LastPlayed(MusicInfo musicInfo);
}
